import { IPSModelObject } from '../../ipsmodel-object';
import { IPSControlItem } from '../ipscontrol-item';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysCss } from '../../res/ipssys-css';
import { IPSSysImage } from '../../res/ipssys-image';
import { IPSSysPFPlugin } from '../../res/ipssys-pfplugin';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDETreeColumn
 */
export interface IPSDETreeColumn extends IPSModelObject, IPSControlItem {
  /**
   * 列对齐
   * @description 值模式 [云实体属性界面模式表格列对齐] {LEFT：左对齐、 CENTER：居中、 RIGHT：右对齐 }
   * @type {( string | 'LEFT' | 'CENTER' | 'RIGHT')}
   */
  align: string | 'LEFT' | 'CENTER' | 'RIGHT';

  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  get capPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageResMust(): IPSLanguageRes;

  /**
   * 标题
   * @type {string}
   */
  caption: string;

  /**
   * 单元格样式对象
   *
   * @type {IPSSysCss}
   */
  getCellPSSysCss(): IPSSysCss | null;

  /**
   * 单元格样式对象
   *
   * @type {IPSSysCss}
   */
  get cellPSSysCss(): IPSSysCss | null;

  /**
   * 单元格样式对象（必须存在）
   *
   * @type {IPSSysCss}
   */
  getCellPSSysCssMust(): IPSSysCss;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 树视图列样式
   * @description 值模式 [实体表格列样式] {USER：用户自定义、 USER2：用户自定义2 }
   * @type {( string | 'USER' | 'USER2')}
   */
  columnStyle: string | 'USER' | 'USER2';

  /**
   * 列类型
   * @description 值模式 [云实体表格列类型] {DEFGRIDCOLUMN：属性列、 UAGRIDCOLUMN：操作列、 GROUPGRIDCOLUMN：属性分组列 }
   * @type {( string | 'DEFGRIDCOLUMN' | 'UAGRIDCOLUMN' | 'GROUPGRIDCOLUMN')}
   */
  columnType: string | 'DEFGRIDCOLUMN' | 'UAGRIDCOLUMN' | 'GROUPGRIDCOLUMN';

  /**
   * 数据项名称
   * @type {string}
   */
  dataItemName: string;

  /**
   * 头部样式对象
   *
   * @type {IPSSysCss}
   */
  getHeaderPSSysCss(): IPSSysCss | null;

  /**
   * 头部样式对象
   *
   * @type {IPSSysCss}
   */
  get headerPSSysCss(): IPSSysCss | null;

  /**
   * 头部样式对象（必须存在）
   *
   * @type {IPSSysCss}
   */
  getHeaderPSSysCssMust(): IPSSysCss;

  /**
   * 头部图片对象
   *
   * @type {IPSSysImage}
   */
  getPSSysImage(): IPSSysImage | null;

  /**
   * 头部图片对象
   *
   * @type {IPSSysImage}
   */
  get psSysImage(): IPSSysImage | null;

  /**
   * 头部图片对象（必须存在）
   *
   * @type {IPSSysImage}
   */
  getPSSysImageMust(): IPSSysImage;

  /**
   * 列绘制应用插件
   *
   * @type {IPSSysPFPlugin}
   */
  getRenderPSSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 列绘制应用插件
   *
   * @type {IPSSysPFPlugin}
   */
  get renderPSSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 列绘制应用插件（必须存在）
   *
   * @type {IPSSysPFPlugin}
   */
  getRenderPSSysPFPluginMust(): IPSSysPFPlugin;

  /**
   * 列宽
   * @type {number}
   */
  width: number;

  /**
   * 列宽单位
   * @description 值模式 [云实体表格列宽度单位] {PX：px、 STAR：* }
   * @type {( string | 'PX' | 'STAR')}
   */
  widthUnit: string | 'PX' | 'STAR';

  /**
   * 支持展开（树节点）
   * @type {boolean}
   */
  enableExpand: boolean;

  /**
   * 支持排序
   * @type {boolean}
   */
  enableSort: boolean;

  /**
   * 默认隐藏
   * @type {boolean}
   * @default false
   */
  hideDefault: boolean;
}
